#include "StdAfx.h"
#include "colision.h"

Colision::Colision()
{
    proporcionDesplazamientoRealizado = 0;
    enteActivo = NULL;
    entePasivo = NULL;

}

Colision::~Colision()
{

}

void Colision::ejecutar()
{
    enteActivo->getVelocidad().setModulo(0);
    enteActivo->aplicarAceleracion(aceleracionEnteActivo);
    enteActivo->setPosicion(posicionColisionEnteActivo);

    enteActivo->setProporcionDesplazamientoPendiente(
            enteActivo->getProporcionDesplazamientoPendiente() - proporcionDesplazamientoRealizado);

    if (entePasivo != NULL && aceleracionEntePasivo.esValido()) {
        entePasivo->aplicarAceleracion(aceleracionEntePasivo);
        entePasivo->setProporcionDesplazamientoPendiente(
                entePasivo->getProporcionDesplazamientoPendiente() - proporcionDesplazamientoRealizado);
    }
}

int Colision::compararCon(const Colision& otraColision)
{
    if (fequals(proporcionDesplazamientoRealizado, otraColision.proporcionDesplazamientoRealizado)) {
        return 0;
    } else if (proporcionDesplazamientoRealizado > otraColision.proporcionDesplazamientoRealizado) {
        return 1;
    } else {
        return -1;
    }
}
